Temporary low resolution rendering of 3D objects

ABSTRACT

3D scenes may be rendered a resolution lower than a resolution associated with the resultant image. A graphics application or 3D editor may render the 3D artwork at a lower resolution while the user modifies or manipulates the 3D model from which the artwork is derived. In some embodiments, an image may include multiple image layers, each representing a portion of the overall finished image. Graphics programs generally associate a target resolution with an image. Rendering 3D artwork at high resolutions may take extra time and result in poor performance. Thus, in some embodiments, a graphics program may be configured to render 3D artwork at a lower resolution than the resultant image&#39;s target or associated resolution while a user is modifying the 3D model. Subsequently, after the user has completed manipulating the 3D model, the graphics program may render the 3D model again at the image&#39;s associated resolution.

BACKGROUND

This application claims priority to U.S. Provisional Patent ApplicationNo. 60/867,558, titled “Temporary Low Resolution Rendering of 3Dobjects”, filed on Nov. 28, 2006, whose inventor is Peter F. Falco, Jr.,and which is herein incorporated by reference in its entirety.

FIELD OF THE INVENTION

The present invention is directed to computer systems. Moreparticularly, it is directed to graphical image processing.

DESCRIPTION OF THE RELATED ART

Three-dimensional (3D) graphics rendering is a process of generating animage from a 3D model, generally by means of software programs and/orgraphics hardware. The model is generally a description of 3D objects ina strictly defined language or data structure and may contain geometry,viewpoint, texture and lighting information. A 3D model may includepolygons, such as triangles, representing the surface of the 3D model.The polygons from the 3D model may be drawn, rendered or rasterized ontoa two-dimensional (2D) surface, such as a computer screen.

Large complex images may be defined using layers. Layers are independentimages that can be manipulated as if each layer were an independentimage. Each layer only forms a part of the final image. Layers are liketransparencies stacked one on top of one another. Each layer may havedifferent objects, images and effects. Layers allow users to work onseparate images in order to modify sections without changing the entireimage. When the layers are stacked, the images appear as if they are alla single image. The final image will be made up from all of the layerswithin the image depending on the order of the layers.

When rendering a scene, the resolution of the image traditionally waslimited to the computer screen size, but there may be times when ahigher resolution image is needed. Higher resolution images may bedivided into multiple image tiles that each fit in the graphics framebuffer. The image may be rendered tile by tile, with the results savedinto off screen memory, a MIP map, or even a file. By subdividing theimage to be rendered into a grid, and then rendering each regionseparately, a series of partial images can be generated that may betiled onto a larger image surface to form the final image.

SUMMARY

3D scenes, artwork or models may be rendered at lower resolutions toimprove performance and response time. For instance when a usermanipulates the 3D artwork, the graphics application may render themodified artwork at a lower resolution, while the user continues tomodify or manipulate the 3D model. In some embodiments, an image mayinclude multiple image layers, each representing a portion of theoverall finished image. In some embodiments, one or more of the layersmay include a 3D rendered image. A user may be able to modify ormanipulate the 3D model and in response the graphics program may rendera new image of the 3D model reflecting the user's changes. For example,a user may select to rotate a 3D model in one layer of a compound image.The user may rotate the 3D model to various positions before beingsatisfied with the new rotation.

Generally, a graphics program associates a target resolution with animage. Rendering the 3D model at high target resolutions may take extratime and result in poor performance. For instance, the graphics programmay render the 3D model multiple times while the user is modifying ormanipulating the 3D model. If each rendering is performed at a highresolution, the performance of the 3D modeler may suffer as compared tolower-resolution renderings of the same 3D model. Thus, in someembodiments, a graphics program may be configured to render a 3D modelat a lower resolution than the resultant image's target or associatedresolution while a user is modifying the 3D model. Subsequently, afterthe user has completed manipulating the 3D model, the graphics programmay render the 3D model again at the image's target resolution.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating one embodiment of a computersystem capable of implementing temporary low resolution rendering of 3Dobjects, as described herein.

FIGS. 2A-2E are block diagrams illustrating temporary low resolutionrendering of 3D objects, according to one embodiment.

FIG. 3 is a flowchart illustrating one embodiment of a method fortemporary low resolution rendering of 3D objects.

FIGS. 4A through 4C are block diagrams illustrating interactiverendering of 3D scenes in a raster tiled environment, in one embodiment.

FIG. 5 is a flowchart illustrating one embodiment of a method forinteractive rendering of 3D scenes in a tiled raster environment, asdescribed herein.

FIG. 6 is a block diagram illustrating 3D artwork rendered at a lowerresolution and as a single image tile, according to one embodiment.

FIG. 7 is a flowchart illustrating one method for interactive renderingof 3D scenes in a tiled raster environment.

While the invention is described herein by way of example for severalembodiments and illustrative drawings, those skilled in the art willrecognize that the invention is not limited to the embodiments ordrawings described. It should be understood, that the drawings anddetailed description thereto are not intended to limit the invention tothe particular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents and alternatives falling within thespirit and scope of the present invention as defined by the appendedclaims. Any headings used herein are for organizational purposes onlyand are not meant to limit the scope of the description or the claims.As used herein, the word “may” is used in a permissive sense (i.e.,meaning having the potential to), rather than the mandatory sense (i.e.,meaning must). Similarly, the words “include”, “including”, and“includes” mean including, but not limited to.

DETAILED DESCRIPTION OF EMBODIMENTS

A graphics application may be configured to render 3D scenes in a tiled,raster environment. Generally, each image in a tiled, raster environmenthas an associated or specified resolution in terms of pixels. In otherwords, an image naturally has a particular size in terms of pixelsassociated with it. For instance, when creating a new image, a user mayspecify the overall size of the image in pixels, such as 800×600 or1280×1024. Thus, when drawing or rendering objects into an image, agraphics application may be configured to render the objects at theresolution specified for the image. Additionally, rather than render theentire image at once at the specified resolution, the graphicsapplication may be configured to render the image as a set of imagetiles, where each image tile represents a small portion of the overallimage. Using multiple image tiles to render an image, especially alarge, high-resolution image, may prevent having to load the entireimage into memory.

A graphics application may also allow an image document to includemultiple image layers as described above. In some embodiments, thegraphics application may allow 3D artwork or scenes to be included aslayers in an image document. Thus, the graphics application may beconfigured to render 3D scenes from 3D models and include the renderedscenes as one or more layers in an image document. In some embodiments,the graphics application may be configured to temporarily render 3Dscenes at a lower resolution than that specified for the final image andmay further be configured to render the 3D scene without using multipleimage tiles, as will be described in more detail below.

In 3D computer graphics, MIP maps (also mipmaps) may be consideredpre-calculated, optimized collections of bitmap images intended toincrease rendering speed and reduce artifacts. The letters “MIP” in thename are an acronym of the Latin phrase multum in parvo, meaning “muchin a small space”. Each image of the MIP map may be a copy of the samemain image, but at a lower resolution. Although the main image may beused when the size of the view is sufficient to render it in fulldetail, the renderer may switch to a suitable MIP map image (orinterpolate between the two nearest) when the image is viewed at asmaller size. Rendering speed may increase when using MIP maps since thenumber of pixels being processed can be much lower when using the lowerresolution copies of the main image. Additionally, the individual imagesin a MIP map may be split into multiple image tiles in order to supporttiled-based rendering at the various resolutions included in the MIPmap. For example, after a user has changed some portion of an image, thegraphics application may only re-render those individual tiles thatinclude the modified portion of the image.

FIG. 1 is a block diagram illustrating one embodiments of a computersystem 1000 suitable for implementing the temporary low resolutionrendering of 3D objects and rendering 3D objects using a single imagetile in a tiled, raster environment, as described herein. Computersystem 1000 may include a graphics application 100 configured to render3D scenes in a tiled, raster environment. For example, graphicsapplication 100 may represent various types of graphics applications,such as painting, publishing, photography, games, animation, and otherapplications. Graphics application 100 may also include a 3D editor 120configured to manipulate and render 3D models, objects and scenes.Please note that while FIG. 1 illustrates 3D editor 120 as separate fromgraphics application 100, in some embodiments, 3D editor may be part ofgraphics application 100. In other embodiments, 3D editor 120 mayrepresent a separate application, utility and/or library that graphicsapplication 100 may communicate with and/or use to generate, manipulateand/or render 3D models, objects, artwork, or scenes.

Additionally, graphics application 100 and/or 3D editor 120 may utilizea graphics processor 1040 when manipulating and/or rendering 3D artwork.A graphics processing unit or GPU may be considered a dedicatedgraphics-rendering device for a personal computer, workstation, gameconsole or other computer system. Modern GPUs may be very efficient atmanipulating and displaying computer graphics and their highly parallelstructure may make them more effective than typical CPUs for a range ofcomplex graphical algorithms. For example, graphics processor 1040 mayimplement a number of graphics primitive operations in a way that makesexecuting them must faster than drawing directly to the screen with ahost central processing unit (CPU), such as CPU 1030. Thus, graphicsapplication 100 and/or 3D editor 120 may be configured to model, editand/or render 3D artwork either alone or by utilizing graphics processor1040, according to various embodiments. Please note that functionalityand/or features described herein as being part of, or performed by,graphics application 100 and/or 3D editor 120 may, in some embodiments,be part of, or performed by, one or more graphics processors, such asgraphics processor 1040.

As described above, graphics application 100 may be configured to workwith and/or generate images including multiple layers, one or more ofwhich may include 3D artwork, objects or scenes. Additionally, graphicsapplication 100 may include functionality allowing a user to generateand manipulate (modify or change) 3D artwork in a layer of a multi-layerimage. For instance, in some embodiments graphics application 100 mayinclude 3D editor 120 that may be configured to provide a user interfacefor editing, modifying or otherwise manipulating 3D artwork. Forexample, graphics application 100 and/or 3D editor 120, may beconfigured to provide a user interface that allows a user to select animage layer including 3D artwork and to modify one or more properties,features, and/or attributes of the 3D artwork. After the user hascompleted manipulating the 3D artwork, graphics application 100 and/or3D editor may render the modified 3D artwork and composite it with therest of the image layers.

As mentioned above, a multi-layer image in a tiled, raster environmentis generally associated with, or specifies, a pixel resolution. In someembodiments, a user may specify a resolution for an image. In otherembodiments, the specified resolution may be dictated or determined byother factors, such as the supported resolutions of equipment, such asdisplays or printers. Rendering 3D artwork at high resolutions may takeconsiderable time and memory resources. Thus, graphics application 100and/or 3D editor 120 may be configured to temporarily render 3D objectsat a resolution lower than the specified resolution. For example, in oneembodiment 3D editor 120 may render the 3D scene at a lower resolution,such as at the screen resolution, than a resolution specified by theoverall image or document including the 3D artwork. 3D editor 120 may beconfigured to render 3D artwork using a lower resolution when a user isediting, modifying or otherwise manipulating the 3D artwork.

After the user has finished editing the 3D artwork, 3D editor 120 may beconfigured to render the 3D artwork at the resolution specified for thefinal image document. Temporarily rendering 3D artwork at a lowerresolution may allow 3D editor 120 and/or graphics application 100 toprovide better performance and response time, such as when a user isediting 3D artwork. Render the 3D artwork at a high resolution aftereach change or modification made to the 3D artwork may result in poorperformance and the response time. In other words, a user modifying 3Dartwork may have to wait an unreasonable amount of time after eachmodification to see rendered result. Since, users frequently make manysmall changes when modifying 3D artwork, rendering the 3D artwork at alower resolution may increase performance and reduce the amount of timea user must wait before seeing the rendered result of each modification.

For example, a user may be editing an image that includes a 3D model ofa cube as a layer. FIG. 2A illustrates a cube 200 that may be includedas a layer in an image, as described herein. Cube 200 may represent alayer of a larger image, or may represent a single image without anyadditional layers, according to different embodiments. If the userdesires to rotate cube 200, graphics application 100 and/or 3D editor120 may be configured to present a user interface allowing manipulationof the 3D artwork. For example, graphics application 100 may beconfigured to change into a 3D editor mode, possible utilizing 3D editor120 in some embodiments. 3D editor 120 may then be configured to allowthe user to edit the 3D model and/or to perform various manipulations,such as panning, rotating, cross-sectioning, etc. However, as notedabove, 3D editor 120 may be configured to temporarily render the 3Dartwork at a lower resolution than the resolution specified by theoverall image of which the 3D artwork is a part. Thus, as illustrated inFIG. 2B, 3D editor 120 may, in one embodiment, first render the 3Dartwork, such as cube 200 in FIG. 2B, as a lower resolution, asindicated by the larger line size of cube 200. For example, 3D editor120 may render cube 210 at the resolution of the screen or displayrather than at a higher resolution specified by or associated with theimage to which the 3D artwork belongs.

In some embodiments, 3D editor 120 may be configured to render 3Dartwork at a lower resolution whenever the user enters a 3D editing modeof graphics application 100 and/or 3D editor 120. In other embodiments,however, 3D editor 120 may not render the 3D artwork at a lowerresolution until the user actually changes or modifies something aboutthe artwork requiring the re-rendering of the artwork. In yet otherembodiments, 3D editor 120 may be configured to allow the user to selectwhen to use a lower resolution to render 3D artwork. Additionally,different hardware, such as graphics memory, configuration may result indiffering performance and response times when 3D artwork is edited.Thus, in some embodiments, graphics application 100 and/or 3D editor 120may be configured to allow the user to specify the resolution at which3D artwork is rendered when the 3D artwork is being edited.

As noted above, when the user is manipulating the 3D artwork, such ascube 200, 3D editor 120 may temporarily, such as while the user ismanipulating the 3D artwork, render the artwork at a lower resolutionthan that specified for finished image. FIG. 2C illustrates cube 200rotated to the left, according to one embodiment. After the usermodifies the 3D artwork, such as specifying that cube 200 should berotated, 3D editor 120 may re-render cube 200 reflecting the newrotation. 3D editor 120 may re-render cube 200 as a lower resolution, asillustrated in FIG. 2C, possibly providing better performance and fasterresponse time to the user. The user may then decide to rotate cube 200even more, and in response 3D editor 120 may re-render the cube at thelower resolution to reflect the new rotation. When the user has finishedmodifying or manipulation the 3D artwork, 3D editor 120 may beconfigured to re-render the 3D artwork at the higher resolutionspecified by or associated with the overall image to which the 3Dartwork belongs, as illustrated by FIG. 2E. Graphics application 100and/or 3D editor 120 may also composite the newly rendered 3D artworkwith other elements and/or layers of the overall image. Please note thatFIGS. 2B-2D illustrate rendering cube 200 in a much lower resolutionthan that illustrated in FIG. 2A and FIG. 2E, for ease of illustrationand discussion. In other embodiments, different resolutions may be used.

In some embodiments, graphics application 100 and/or 3D editor 120 maybe configured to provide a 3D editing mode or user interface separatefrom modes or user interfaces allowing editing or manipulating of 2Dartwork included in an image or document. 3D editor 120 may beconfigured to temporarily render 3D artwork at a lower resolutionwhenever the user is editing 3D artwork in the 3D editing mode or userinterface. Thus, when the user begins using the 3D editing mode or userinterface, 3D editor 120 may begin to use a lower resolution to renderthe 3D artwork. Additionally, when the user exits or stops using the 3Dediting mode or user interface, 3D editor 120 may render the 3D artworkat the higher resolution specified by or associated with the final imageor document.

Thus, 3D editor 120 may be configured to recognize when a user entersand exits a 3D editing mode or user interface and temporarily render 3Dartwork at a lower resolution while the user is in the 3D editing modeor user interface, according to some embodiments. In other embodiments,3D editor 120 may be configured to start and stop rendering 3D artworkat the lower resolution based on other factors. For example, in oneembodiments, 3D editor 120 may be configured to stop rendering 3Dartwork at a lower resolution and to render the artwork at a higherresolution when ever a certain amount of time has elapsed since the userlast modified or manipulated the 3D artwork. In other words, after acertain amount of idle time, 3D editor 120 may re-render the 3D artworkat the higher resolution. If the user subsequently makes anothermodification (rotation, transformation, panning, etc) to the 3D artwork,3D editor 120 may be configured to begin temporarily rendering the 3Dartwork at the lower resolution again, according to some embodiments. Inyet other embodiments, 3D editor 120 and/or graphics application 100 maybe configured to allow the user to specify when 3D artwork should againbe rendered at the higher resolution. For instance, the user may selecta particular menu item or other user interface element that specifiesthat the user desires to see the 3D artwork rendered at the higherresolution. For example, the user may desire to preview the results ofone or more modifications to the 3D artwork at the higher resolutionbefore exiting the 3D editing mode or user interface, according to oneembodiment.

FIG. 3 is a flowchart illustrating one embodiment of method fortemporarily rendering 3D artwork at lower resolutions, as describedherein. As noted above, in some embodiments, a graphics application,such as graphics application 100 and/or 3D editor 120 may providefunctionality allowing a user to modify or manipulate 3D artwork, suchas might be included as one layer of a multi-layer image or document.Thus, 3D editor 120 may manipulate a 3D model in response to user input,as indicated by block 300. For instance, the user may specify variouschanges or modifications, such as panning, cross-sectioning, rotating,etc., to the 3D artwork or model. 3D editor 120 may then render themanipulated 3D model at a lower resolution, such as at the resolution ofthe screen, graphics card, or display currently being used, as indicatedby block 320. As noted above, 3D editor 120 may be configured tore-render the 3D artwork after each change or edit by the user andrendering the artwork at a lower resolution, such as at the screenresolution, may result in better performance and faster response time tothe user's modifications. Thus the user may be able to more quickly seethe results of any particular manipulation of the 3D artwork at thelower resolution.

In some embodiments, 3D editor 120 may be configured to determine thatthe user has finished editing the 3D artwork, such as by receiving userinput indicating that the user has finished manipulating the artwork, asillustrated by block 340. For example, in some embodiments, the user mayexplicitly exit a particular 3D editing mode or user interface. Inresponse to determining that the user has finished modifying the 3Dartwork, 3D editor 120 may render the 3D artwork at the resolutionspecified by or associated with the final image, as indicated by block360.

Please note that FIG. 3 illustrates only one possible embodiment, andthat 3D editor 120 may, in other embodiments, determine when to render3D artwork at different resolutions based on different actions, eventsor user input. For example, 3D editor 120 may re-render modified 3Dartwork at the higher image resolution after a certain amount of idletime has elapsed without the user modifying the 3D artwork. In otherembodiments, 3D editor may allow the user to request that modified 3Dartwork be rendered at the higher image resolution specifically, such asto preview the modified 3D artwork at the higher resolution prior tocompositing the 3D scene into the final image.

Additionally, graphics application 100 and/or 3D editor 120 may beconfigured to render 3D artwork using a single image tile even whenworking with images in tiled, raster environment. Typically, largeimages, especially 2D images, are rendered multiple (sometimes) manyindividual image tiles, or sub-images. However, rendering 3D artworkusing multiple image tiles may result in poor performance because everyelement of the 3D model (sometimes called the geometry), such as everyvertex, polygon, texture, and shader, may have to betransformed—generally a mathematically expensive operation, to determinewhether or not that element is visible, and hence should be rendered, inany individual image tile. When rendering 3D artwork in a tiled manner,every element of the 3D model may have to be analyzed, such as bytransformation, for every image tile to determine what elements shouldbe rendered for each image tile.

However, in some embodiments, graphics application 100 and/or 3D editor120 may be configured to render 3D artwork in a non-tiled manner. Inother words, 3D editor 120 may be configured to temporarily render 3Dartwork using as a single image tile, even when the rest of the image,such as other layers of multi-layer image, may be rendered in a tiledmanner. For example, 3D editor 120 may be configured to allow a user tomanipulate or modify 3D artwork that is included as one layer of amulti-layer image or document in a tiled, raster environment. Ratherthan rendering the 3D artwork in a tiled, and therefore potentiallyslow, manner 3D editor 120 may be configured to temporarily render the3D artwork in a non-tiled (or single image tile) manner at least whilethe 3D artwork is being modified or manipulated. For instance, FIG. 4Aillustrates cube 200 and 3D editor 120 may allow the user to modify ormanipulate cube 200, as described above. As noted above, graphicsapplication 100 and/or 3D editor 120 may include a 3D editing mode,tool, or user interface allowing a user to modify or manipulate 3Dartwork, such as when a layer of multi-layer image includes 3D artwork.

In tiled, raster environments, an image, such as a multi-layer image,may be rendered using multiple image tiles, such as from a MIP map.Thus, in some embodiments, 3D editor 120 may be configured to render 3Dartwork into multiple image tiles in order to support the tiledrendering of the overall or final image. When the user is manipulatingthe 3D model or artwork, such as rotating cube 200 as illustrated inFIG. 4B, a tiled rendering of the 3D artwork may result in slowerperformance and longer response times. Thus, in some embodiments, 3Deditor 120 may be configured to temporarily render the 3D artwork innon-tiled manner or as a single tile, such as to avoid multiplerendering traversals of the 3D scene to determine what needs to berendered in each image tile. For example, FIG. 4B illustrates cube 200being rendered as a single image tile 400, according to one embodiment.As the user modifies or manipulates the 3D artwork, such as cube 200, 3Deditor 120 may render the 3D artwork after each modification to displaythe resultant 3D artwork to the user. After the user has finishedmanipulating the 3D artwork, 3D editor 120 may re-render the 3D artworkin a tiled manner, such as to support the tiled rendering of theoverall, multi-layer image. FIG. 4C illustrates cube 200 rendered usingmultiple image tiles, such as image tiles 410A, 410B, 410C and 410D. Forexample, when a user desires to modify or manipulate 3D artwork that ispart of a large image, 3D editor 120 may be configured to treat the 3Dartwork, at least while being manipulated, as a single, large image tileand only after the user has finished manipulating the 3D artwork to thenrender the 3D artwork into the multiple, individual image tiles.

In a tiled, raster environment, graphics application 100 and/or 3Deditor 120 may be configured to support MIP maps including multiplecopies of an image at different resolutions and each image copy in theMIP map may be split into individual image tiles, as described above.Additionally, in some embodiments, 3D editor 120 may be configured torender the manipulated 3D artwork as multiple image tiles at differentresolutions, such as in order to support a MIP map. Thus, 3D editor 120may, in some embodiments, be configured to render 3D artwork usingmultiple, tiled, resolutions in order to support MIP map based renderingof the overall image to which the 3D artwork belongs. In someembodiments, 3D editor 120 may be configured to render the 3D artwork asa single, large image tile and then split the rastered pixel data intothe multiple image tiles. In other embodiments, however, 3D editor 120may be configured to re-render the manipulated 3D artwork in a fullytiled manner.

FIG. 5 is a flowchart illustrating one embodiment of method fortemporarily rendering 3D artwork as a single image tile in a multi-tiledrendering environment, as described herein. As noted above, in someembodiments, a graphics application, such as graphics application 100and/or 3D editor 120 may provide functionality allowing a user to modifyor manipulate 3D artwork, such as might be included as one layer of amulti-layer image or document. Thus, 3D editor 120 may manipulate a 3Dmodel in response to user input, as indicated by block 500. Forinstance, the user may specify various changes or modifications, such aspanning, cross sectioning, rotating, etc., to the 3D artwork or model.3D editor 120 may then render the manipulated 3D model in a non-tiledmanner or as a single image tile, as indicated by block 520. As notedabove, 3D editor 120 may be configured to re-render the 3D artwork aftereach change or edit by the user and rendering the artwork as a singleimage tile may result in better performance and faster response time tothe user's modifications. Thus the user may be able to more quickly seethe results of any particular manipulation of the 3D artwork, accordingto some embodiments.

In some embodiments, 3D editor 120 may be configured to determine thatthe user has finished editing the 3D artwork, such as by receiving userinput indicating that the user has finished manipulating the artwork, asillustrated by block 540. For example, in some embodiments, the user mayexplicitly exit a particular 3D editing mode or user interface. Inresponse to determining that the user has finished modifying the 3Dartwork, 3D editor 120 may render the 3D artwork as a multi-tiled image,as indicated by block 560.

Please note that FIG. 5 illustrates only one possible embodiment, andthat 3D editor 120 may, in other embodiments, determine when to render3D artwork using multiple image tiles based on different actions, eventsor user input. For example, 3D editor 120 may re-render modified 3Dartwork as multiple image tiles after a certain amount of idle time haselapsed without the user modifying the 3D artwork.

As noted above, graphics application 100 and/or 3D editor 120 may beconfigured to render the manipulated 3D artwork into multiple imagetiles at multiple resolutions to support MIP map based rendering of theoverall image. In some embodiments, 3D editor 120 may be configured torender manipulated 3D artwork into multiple image tiles at multipleresolutions in response to the user completing the manipulation of the3D artwork. In other embodiments, however, 3D editor 120 may beconfigured to render of the manipulate 3D artwork as multiple imagetiles only at resolutions currently needed and to delay rendering themanipulated 3D artwork as multiple image tiles at other resolutionsuntil those resolutions are needed.

Additionally, graphics application 100 and/or 3D editor 120 may beconfigured to temporarily render 3D artwork at a lower resolution and asa single image tile, according to some embodiments. For instance, asillustrated in FIG. 6, 3D editor 120 may be configured to temporarilyrender cube 200 at a lower resolution that the resolution associatedwith the overall, multi-layer image or document and as a single imagetile 400. While the 3D artwork is being manipulated, 3D editor 120 maycontinue to render the 3D artwork as a single image tile andsubsequently render the 3D artwork as multiple image tiles at theresolution associated with the multi-layer image once the manipulationof the 3D artwork is complete, according to some embodiments.

FIG. 7 is a flowchart illustrating one embodiment of a method fortemporarily rendering 3D artwork as a single image tile and at a lowerresolution. As noted above, in some embodiments, a graphics application,such as graphics application 100 and/or 3D editor 120 may providefunctionality allowing a user to modify or manipulate 3D artwork, suchas might be included as one layer of a multi-layer image or document.Thus, 3D editor 120 may manipulate a 3D model in response to user input,as indicated by block 700. For instance, the user may specify variouschanges or modifications, such as panning, cross-sectioning, rotating,etc., to the 3D artwork or model. 3D editor 120 may then render themanipulated 3D model in a non-tiled manner or as a single image tile andat a resolution lower than the specified image resolution, as indicatedby block 720. As noted above, 3D editor 120 may be configured tore-render the 3D artwork after each change or manipulation by the userand rendering the artwork as a single image tile at a lower resolutionmay result in better performance and faster response time to the user'smodifications. Thus the user may be able to more quickly see the resultsof any particular manipulation of the 3D artwork, according to someembodiments.

In some embodiments, 3D editor 120 may be configured to determine thatthe user has finished editing the 3D artwork, such as by receiving userinput indicating that the user has finished manipulating the artwork, asillustrated by block 740. For example, in some embodiments, the user mayexplicitly exit a particular 3D editing mode or user interface. Inresponse to determining that the user has finished modifying the 3Dartwork, 3D editor 120 may render the 3D artwork as a multi-tiled imageand at the resolution associated with the multi-layer image, asindicated by block 760.

Temporarily rendering 3D artwork at lower resolutions and as a singleimage tile, as described herein may be implemented on various types ofcomputer systems. Referring again to FIG. 1, computer system 1000 may beany of various types of devices, including, but not limited to, apersonal computer system, desktop computer, laptop or notebook computer,mainframe computer system, handheld computer, workstation, networkcomputer, a consumer device, application server, storage device, aperipheral device such as a switch, modem, router, or in general anytype of computing device.

The 3D editor 120 described herein may be provided as a computer programproduct, or software, that may include a computer-readable storagemedium having stored thereon instructions, which may be used to programa computer system (or other electronic devices) to implement temporarilyrendering 3D artwork at low pixel resolutions and as a single image tilein tiled, raster environments, as described herein. A computer-readablestorage medium includes any mechanism for storing information in a form(e.g., software, processing application) readable by a machine (e.g., acomputer). The machine-readable storage medium may include, but is notlimited to, magnetic storage medium (e.g., floppy diskette); opticalstorage medium (e.g., CD-ROM); magneto optical storage medium; read onlymemory (ROM); random access memory (RAM); erasable programmable memory(e.g., EPROM and EEPROM); flash memory; electrical, or other types ofmedium suitable for storing program instructions. In addition, programinstructions may be communicated using optical, acoustical or other formof propagated signal (e.g., carrier waves, infrared signals, digitalsignals, or other types of signals or mediums.).

A computer system 1000 may include a processor unit (CPU) 1030 (possiblyincluding multiple processors, a single threaded processor, amulti-threaded processor, a multi-core processor, or other type ofprocessor). The computer system 1000 may also include one or more systemmemories 1010 (e.g., one or more of cache, SRAM DRAM, DRAM, EDO RAM, DDRRAM, SDRAM, Rambus RAM, EEPROM, or other memory type), an interconnect1040 (e.g., a system bus, LDT, PCI, ISA, or other bus type), and anetwork interface 1050 (e.g., an ATM interface, an Ethernet interface, aFrame Relay interface, or other interface). The memory medium 1010 mayinclude other types of memory as well, or combinations thereof.Embodiments of the graphics application 100 and/or 3D editor 120described herein may include fewer or additional components notillustrated in FIG. 1 (e.g., video cards, audio cards, storage devices,additional network interfaces, peripheral devices, or other components).The CPU 1030, the network interface 1050, and the memory 1010 may becoupled to the interconnect 1040. It should also be noted that one ormore components of system 1000 might be located remotely and accessedvia a network. One or more of the memories 1010 may embody a graphicsapplication 100 and/or a 3D editor 120.

In some embodiments, memory 1010 may include program instructionsconfigured to implement graphics application 100 and/or 3D editor 120,as described herein. Graphics application 100 and/or 3D editor 120 maybe implemented in any of various programming languages or methods. Forexample, in one embodiment, graphics application 100 and/or 3D editor120 may be JAVA based, while in another embodiments, they may beimplemented using the C or C++ programming languages. In otherembodiments, graphics application 100 and/or 3D editor 120 may beimplemented using specific graphic languages specifically for developingprograms executed by specialize graphics hardware, such as GPU 1040. Inaddition, graphics application 100 and/or 3D editor 120 may be embodiedon memory specifically allocated for use by graphics processor(s) 1040,such as memory on a graphics board including graphics processor(s) 1040.Thus, memory 1010 may represent dedicated graphics memory as well asgeneral-purpose system RAM.

Network interface 1040 may be configured to enable computer system 1000to communicate with other computers, systems or machines, such as acrossnetwork 100, described above. Network interface 1040 may use standardcommunications technologies and/or protocols. Network 100 may include,and network interface 1040 may utilize, links using technologies such asEthernet, 802.11, integrated services digital network (ISDN), digitalsubscriber line (DSL), and asynchronous transfer mode (ATM) as well asother communications technologies. Similarly, the networking protocolsused on network 100 may include multiprotocol label switching (MPLS),the transmission control protocol/Internet protocol (TCP/IP), the UserDatagram Protocol (UDP), the hypertext transport protocol (HTTP), thesimple mail transfer protocol (SMTP), and the file transfer protocol(FTP), among other network protocols. The data exchanged over network100 by network interface 1040 may be represented using technologies,languages, and/or formats, such as the hypertext markup language (HTML),the extensible markup language (XML), and the simple object accessprotocol (SOAP) among other data representation technologies.Additionally, all or some of the links or data may be encrypted usingany suitable encryption technologies, such as the secure sockets layer(SSL), Secure HTTP and/or virtual private networks (VPNs), theinternational data encryption standard (DES or IDEA), triple DES,Blowfish, RC2, RC4, RC5, RC6, as well as other data encryption standardsand protocols. In other embodiments, custom and/or dedicated datacommunications, representation, and encryption technologies and/orprotocols may be used instead of, or in addition to, the particular onesdescribed above.

GPUs, such as GPU 1040 may be implemented in a number of differentphysical forms. For example, GPU 1040 may take the form of a dedicatedgraphics card, an integrated graphics solution and/or a hybrid solution.GPU 1040 may interface with the motherboard by means of an expansionslot such as PCI Express Graphics or Accelerated Graphics Port (AGP) andthus may be replaced or upgraded with relative ease, assuming themotherboard is capable of supporting the upgrade. However, a dedicatedGPU is not necessarily removable, nor does it necessarily interface themotherboard in a standard fashion. The term “dedicated” refers to thefact that hardware graphics solution may have RAM that is dedicated forgraphics use, not to whether the graphics solution is removable orreplaceable. Dedicated GPUs for portable computers may be interfacedthrough a non-standard and often proprietary slot due to size and weightconstraints. Such ports may still be considered AGP or PCI express, evenif they are not physically interchangeable with their counterparts. Asillustrated in FIG. 1, memory 1010 may represent any of various typesand arrangements of memory, including general-purpose system RAM and/ordedication graphics or video memory.

Integrated graphics solutions, or shared graphics solutions are graphicsprocessors that utilize a portion of a computer's system RAM rather thandedicated graphics memory. For instance, modern desktop motherboardsnormally include an integrated graphics solution and have expansionslots available to add a dedicated graphics card later. As a GPU may beextremely memory intensive, an integrated solution finds itselfcompeting for the already slow system RAM with the CPU as the integratedsolution has no dedicated video memory. For instance, system RAM mayexperience a bandwidth between 2 GB/s and 8 GB/s, while most dedicatedGPUs enjoy from 15 GB/s to 30 GB/s of bandwidth.

Hybrid solutions also share memory with the system memory, but have asmaller amount of memory on-board than discrete or dedicated graphicscards to make up for the high latency of system RAM. Data communicatedbetween the graphics processing unit and the rest of the computer maytravel through the graphics card slot or other interface, such asinterconnect 1040 of FIG. 1.

While graphics application 100 and 3D editor 120 have been describedwith reference to various embodiments, it will be understood that theseembodiments are illustrative and that the scope of the present inventionis not limited to them. Many variations, modifications, additions, andimprovements are possible. More generally, the present invention isdescribed in the context of particular embodiments. For example, theblocks and logic units identified in the description are for ease ofunderstanding and not meant to limit the invention to any particularembodiment. Functionality may be separated or combined in blocksdifferently in various realizations or described with differentterminology.

The embodiments described herein are meant to be illustrative and notlimiting. Accordingly, plural instances may be provided for componentsdescribed herein as a single instance. Boundaries between variouscomponents, operations and data stores are somewhat arbitrary, andparticular operations are illustrated in the context of specificillustrative configurations. Other allocations of functionality areenvisioned and may fall within the scope of claims that follow. Finally,structures and functionality presented as discrete components in theexemplary configurations may be implemented as a combined structure orcomponent. These and other variations, modifications, additions, andimprovements may fall within the scope of the invention as defined inthe claims that follow.

Although the embodiments above have been described in detail, numerousvariations and modifications will become apparent once the abovedisclosure is fully appreciated. It is intended that the followingclaims be interpreted to embrace all such variations and modifications.

1. A method, comprising: performing via a computer: rendering an imagedocument having a specified resolution, wherein the image document isrendered as a single two-dimensional (2D) image from a plurality oflayers that are composited together, wherein each layer of the pluralityof layers contains information that is different from other layers ofthe plurality of layers and each layer of the plurality of layers iseditable independently of other layers of the plurality of layers,wherein a computer-generated three-dimensional (3D) model is rendered asone of the layers, and wherein one or more of the other layers comprise2D artwork for the document separate from the 3D model; in response toinput received during a 3D editing mode, manipulating thecomputer-generated three-dimensional (3D) model, wherein thecomputer-generated 3D model comprises a description of one or more 3Dobjects, wherein the description comprises geometry information for oneor more surfaces of each 3D object; in response to said manipulating,rendering, from the 3D model, the one layer of the plurality of layersindependently of other layers of the plurality of layers, and whereinduring the 3D editing mode the one layer is rendered from the 3D modelat a resolution lower than the specified resolution and within a singleimage tile; and subsequent to exiting the 3D editing mode, rendering theone layer from the 3D model at the specified resolution as a pluralityof image tiles and compositing the one layer with the other layers ofthe plurality of layers.
 2. The method of claim 1, wherein a size ofeach of the plurality of image tiles is equivalent to or smaller than asize of a graphics frame buffer.
 3. The method of claim 1, wherein saidrendering the one layer from the 3D model at the specified resolution isperformed in response to determining that the manipulating of the 3Dmodel is finished.
 4. The method of claim 1, wherein said rendering theone layer from the 3D model at the specified resolution is performed inresponse to determining that the 3D model has not been manipulatedwithin a specified amount of time.
 5. The method of claim 1, furthercomprising rendering the one layer from the 3D model at a plurality ofdifferent resolutions and storing the resultant plurality of images in aMIP map.
 6. The method of claim 1, wherein said rendering the one layerfrom the 3D model at the resolution lower than the specified resolutioncomprises rendering the one layer from the 3D model at a current screenresolution.
 7. A system, comprising: a processor; and memory coupled tothe processor, wherein the memory comprises program instructionsexecutable by the processor to implement: rendering an image documenthaving a specified resolution, wherein the image document is rendered asa single two-dimensional (2D) image from a plurality of layers that arecomposited together, wherein each layer of the plurality of layerscontains information that is different from other layers of theplurality of layers and each layer of the plurality of layers iseditable independently of other layers of the plurality of layers,wherein a computer-generated three-dimensional (3D) model is rendered asone of the layers, and wherein one or more of the other layers comprise2D artwork for the document separate from the 3D model; in response toinput received during a 3D editing mode, manipulating thecomputer-generated three-dimensional (3D) model, wherein thecomputer-generated 3D model comprises a description of one or more 3Dobjects, wherein the description comprises geometry information for oneor more surfaces of each 3D object; in response to said manipulating,rendering, from the 3D model, the one layer of the plurality of layersindependently of other layers of the plurality of layers, and whereinduring the 3D editing mode the one layer is rendered from the 3D modelat a resolution lower than the specified resolution and within a singleimage tile; and subsequent to exiting the 3D editing mode, rendering theone layer from the 3D model at the specified resolution as a pluralityof image tiles and compositing the one layer with the other layers ofthe plurality of layers.
 8. The system of claim 7, wherein each of theplurality of image tiles is a portion of the multi-layer image, andwherein a size of each of the plurality of image tiles is equivalent toor smaller than a size of a graphics frame buffer.
 9. The system ofclaim 7, wherein the program instructions are further configured to:determine that said manipulating the 3D model is complete; and inresponse to said determining, render the one layer from the 3D model atthe specified resolution.
 10. The system of claim 7, wherein the programinstructions are further configured to: determine that the 3D model hasnot been manipulated within a specified amount of time; and in responseto said determining, render the one layer from the 3D model at thespecified resolution.
 11. The system of claim 7, wherein the programinstructions are further configured to: render the one layer from the 3Dmodel at a plurality of different resolutions; and store the resultantplurality of images in a MIP map.
 12. The system of claim 7, whereinsaid rendering the one layer from the 3D model at the resolution lowerthan the specified resolution comprises rendering the one layer from the3D model at a current screen resolution.
 13. A non-transitorycomputer-readable storage medium storing program instructions executableto implement: rendering an image document having a specified resolution,wherein the image document is rendered as a single two-dimensional (2D)image from a plurality of layers that are composited together, whereineach layer of the plurality of layers contains information that isdifferent from other layers of the plurality of layers and each layer ofthe plurality of layers is editable independently of other layers of theplurality of layers, wherein a computer-generated three-dimensional (3D)model is rendered as one of the layers, and wherein one or more of theother layers comprise 2D artwork for the document separate from the 3Dmodel; in response to input received during a 3D editing mode,manipulating the computer-generated three-dimensional (3D) model,wherein the computer-generated 3D model comprises a description of oneor more 3D objects, wherein the description comprises geometryinformation for one or more surfaces of each 3D object; in response tosaid manipulating, rendering, from the 3D model, the one layer of theplurality of layers independently of other layers of the plurality oflayers, and wherein during the 3D editing mode the one layer is renderedfrom the 3D model at a resolution lower than the specified resolutionand within a single image tile; and subsequent to exiting the 3D editingmode, rendering the one layer from the 3D model at the specifiedresolution as a plurality of image tiles and compositing the one layerwith the other layers of the plurality of layers.
 14. The non-transitorycomputer-readable storage medium of claim 13, wherein each of theplurality of image tiles is a portion of the multi-layer image, andwherein a size of each of the plurality of image tiles is equivalent toor smaller than a size of a graphics frame buffer.
 15. Thenon-transitory computer-readable storage medium of claim 13, whereinsaid rendering the one layer from the 3D model at the specifiedresolution is performed in response to determining that saidmanipulating the 3D model is complete.
 16. The non-transitorycomputer-readable storage medium of claim 13, wherein said rendering theone layer from the 3D model at the specified resolution is performed inresponse to determining that the 3D model has not been manipulatedwithin a specified amount of time.
 17. The non-transitorycomputer-readable storage medium of claim 13, wherein the programinstructions are further configured to implement rendering the one layerfrom the 3D model at a plurality of different resolutions and storingthe resultant plurality of images in a MIP map.
 18. The non-transitorycomputer-readable storage medium of claim 13, wherein said rendering theone layer from the 3D model at the resolution lower than the specifiedresolution comprises rendering the one layer from the 3D model at acurrent screen resolution.